Cloud computing is the use of computing resources (hardware and software) which are available in a remote location and accessible over a network, such as the Internet. Users are able to buy these computing resources (including storage and computing power) as a utility on demand. Cloud computing entrusts remote services with a user's data, software and computation. Use of virtual computing resources can provide a number of advantages including cost advantages and/or ability to adapt rapidly to changing computing resource needs.
Software updates in a cloud computing environment can be problematic. A typical model for deploying a new version of a service in the cloud computing environment can include stopping any ongoing execution of a current version, replacing the current version with the new version and then executing the new version. In such a scenario, the old version can be completely erased. Customers are sensitive to rolling out a new software deployment across all zones close in time as errors can cause large-scale outages of the customer's network. Additionally, rolling back upgrades due to errors or performance issues can be difficult and require significant downtown for the customer's hosted software.